/*
 * Created on Feb 11, 2005
 * Created by dfhuynh
 */
package edu.mit.simile.longwell.schema;

import java.util.Set;

import com.hp.hpl.jena.rdf.model.Resource;

/**
 * @author dfhuynh
 */
public interface IStructuredClass {
	/**
	 * Answer the URI of the class.
	 * 
	 * @return
	 */
	public String getURI();
	
	/**
	 * Answer whether this class has been specified explicitly, or guessed.
	 * 
	 * @return
	 */
	public boolean isExplicit();
	
	/**
	 * Answer the set of IStructuredSchema's that this class belongs to.
	 * @return
	 */
	public Set getSchemas();
	
	/**
	 * Answer the set of IStructuredProperty's of this class.
	 * 
	 * @return
	 */
	public Set getProperties();
	
	/**
	 * Answer the IStructuredProperty of this class having the given URI.
	 * 
	 * @param uri
	 * @return
	 */
	public IStructuredProperty getProperty(String uri);
	
	/**
	 * Answer the set of objects that are instances of this structured class.
	 * 
	 * @return
	 */
	public Set getObjects();
	
	/**
	 * Answer the number of objects that are instances of this structured class.
	 * 
	 * @return
	 */
	public int countObjects();
	
	/**
	 * Answer whether the given object is an instance of this structured class.
	 * 
	 * @param object
	 * @return
	 */
	public boolean containsObject(Resource object);
}
